﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

namespace ibba.src.norisk.page
{
    public partial class PageDeParaAreaSubLimite : Page
    {
        private const string regularBuscaPrudutoEstrategia_ = "^(.*) - (.*)";

        private ViewModels.DeParaAreaSublimiteViewModel _viewModel;


        public PageDeParaAreaSubLimite()
        {
            InitializeComponent();

            _viewModel = LayoutRoot.DataContext as ViewModels.DeParaAreaSublimiteViewModel;
            _viewModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(_viewModel_PropertyChanged);
        }

        void _viewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            bool bVisivel;

            if (sender != null)
            {
                switch (e.PropertyName)
                {
                    case "StateView":
                        if (PerfilHelper.IsMaster.Equals(false) || _viewModel.Entidade.IdAreaSubLimite.Equals(0))
                        {
                            App.MainPage.barraMenu.AlterarVisibilidadeBotoes(false);
                        }
                        else
                        {
                            bVisivel = (_viewModel.StateView == sl.recursos.MVVM.StateViewType.Changing ||
                                        _viewModel.StateView == sl.recursos.MVVM.StateViewType.Inserting);

                            App.MainPage.barraMenu.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_SALVAR.ToString(), bVisivel);
                            App.MainPage.barraMenu.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_REJEITAR.ToString(), bVisivel);

                            App.MainPage.barraMenu.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_EDITAR.ToString(), !bVisivel);
                        }
                        break;

                    case "ProdutoItauSelecionado":
                        if (_viewModel.ProdutoItauSelecionado == null)
                        {
                            txtProdutoItau.Text = string.Empty;
                            chkUtilizarProdProc.IsChecked = false;
                        }
                        break;

                    case "EstrategiaSelecionado":
                        if (_viewModel.EstrategiaSelecionado == null)
                        {
                            txtEstrategia.Text = string.Empty;
                            chkUtilizarEstratProc.IsChecked = false;
                        }
                        break;

                    case "AreaInstitucionalSelecionado":
                        if (_viewModel.AreaInstitucionalSelecionado == null)
                        {
                            txtAreaInstitucional.Text = string.Empty;
                            chkUtilizarAreaProc.IsChecked = false;
                        }

                        break;

                    default:
                        break;
                }
            }
            //throw new NotImplementedException();
        }

        // Executes when the user navigates to this page.
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            CarregarBarraBotoes();
        }

        /// <summary>
        /// Carrega os botoes no rodape da aplicacao
        /// </summary>
        private void CarregarBarraBotoes()
        {
            App.MainPage.barraMenu.ClearButtons();

            App.MainPage.barraMenu.AddNewButton(Constantes.SourceImagem.BOTAO_EDITAR.ToString(), "Alterar",
                                                Constantes.SourceImagem.BOTAO_EDITAR, 1,
                                                new ibba.src.slcomponentes.ControlMenuBar.Botao.DelegateClick(btnAlterar_Click));
            
            App.MainPage.barraMenu.AddNewButton(Constantes.SourceImagem.BOTAO_SALVAR.ToString(), "Salvar",
                                                Constantes.SourceImageApp.BOTAO_SALVAR_AZUL, 1,
                                                new ibba.src.slcomponentes.ControlMenuBar.Botao.DelegateClick(btnSalvar_Click));

            App.MainPage.barraMenu.AddNewButton(Constantes.SourceImagem.BOTAO_REJEITAR.ToString(), "Cancelar",
                                                Constantes.SourceImagem.BOTAO_REJEITAR, 2,
                                                new ibba.src.slcomponentes.ControlMenuBar.Botao.DelegateClick(btnCancelar_Click));

            App.MainPage.barraMenu.AlterarVisibilidadeBotoes(false);
            //App.MainPage.barraMenu.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_EDITAR.ToString(), PerfilHelper.IsMaster);
            App.MainPage.barraMenu.AtualizarControles();
        }

        private void btnAlterar_Click()
        {
            _viewModel.Editar();
        }

        private void btnSalvar_Click()
        {
            _viewModel.Salvar();
        }

        private void btnCancelar_Click()
        {
            _viewModel.Cancelar();
        }

        private void CustomButtonBar_Click(object sender, RoutedEventArgs e)
        {
            _viewModel.ObterPorId(_viewModel.AreaSubLimiteSelecionado.IdAreaSubLimite);
        }

        private void btnExcluirProdutoItau_Click(object sender, RoutedEventArgs e)
        {
            _viewModel.DetalheProdutos.CheckRemove();            
        }

        private void btnExcluirEstrategia_Click(object sender, RoutedEventArgs e)
        {
            _viewModel.DetalheEstrategias.CheckRemove();
        }

        private void btnExcluirAreaInstitucional_Click(object sender, RoutedEventArgs e)
        {
            _viewModel.DetalheAreasInstitucionais.CheckRemove();
        }

        private void chkUtilizarProdProc_Checked(object sender, RoutedEventArgs e)
        {
            _viewModel.ProdutoUtilizaProcessamento = chkUtilizarProdProc.IsChecked.Value;
        }

        private void chkUtilizarEstratProc_Checked(object sender, RoutedEventArgs e)
        {
            _viewModel.EstrategiaUtilizaProcessamento = chkUtilizarEstratProc.IsChecked.Value;
        }

        private void chkUtilizarAreaProc_Checked(object sender, RoutedEventArgs e)
        {
            _viewModel.AreaUtilizaProcessamento = chkUtilizarAreaProc.IsChecked.Value;
        }

        private void chkUtilizarProduto_Checked(object sender, RoutedEventArgs e)
        {
            if (_viewModel.DetalheProdutos.DetalheSelecionado != null)  
                _viewModel.DetalheProdutos.DetalheSelecionado.UtilizaProcessamento = true;
        }

        private void chkUtilizarProduto_Unchecked(object sender, RoutedEventArgs e)
        {
            if (_viewModel.DetalheProdutos.DetalheSelecionado != null) 
                _viewModel.DetalheProdutos.DetalheSelecionado.UtilizaProcessamento = false;
        }

        private void chkUtilizarEstrategia_Checked(object sender, RoutedEventArgs e)
        {
            if (_viewModel.DetalheEstrategias.DetalheSelecionado != null)
                _viewModel.DetalheEstrategias.DetalheSelecionado.UtilizaProcessamento = true;
        }

        private void chkUtilizarEstrategia_Unchecked(object sender, RoutedEventArgs e)
        {
            if (_viewModel.DetalheEstrategias.DetalheSelecionado != null)
                _viewModel.DetalheEstrategias.DetalheSelecionado.UtilizaProcessamento = false;
        }

        private void chkUtilizarArea_Checked(object sender, RoutedEventArgs e)
        {
            if (_viewModel.DetalheAreasInstitucionais.DetalheSelecionado != null)
                _viewModel.DetalheAreasInstitucionais.DetalheSelecionado.UtilizaProcessamento = true;
        }

        private void chkUtilizarArea_Unchecked(object sender, RoutedEventArgs e)
        {
            if (_viewModel.DetalheAreasInstitucionais.DetalheSelecionado != null)
                _viewModel.DetalheAreasInstitucionais.DetalheSelecionado.UtilizaProcessamento = false;
        }
    }
}
